﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Reflection;
using System.Web.Security;
using NovaSystem.EntidadesNegocio;
using NovaSystem.ComponentesNegocio;
using AnovoAndes.Framework.Utilidades;

namespace NovaSystem.InterfazUsuarioWeb
{
    public partial class NovaSystem : System.Web.UI.MasterPage
    {
        Cadena cadena = new Cadena();
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
                System.IO.FileInfo assemblyFileInfo = new System.IO.FileInfo(Assembly.GetExecutingAssembly().Location);
                string name = ((AssemblyTitleAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyTitleAttribute))).Title;
                string buildDate = assemblyFileInfo.LastWriteTime.ToString("dd MMM yyyy");
                lblVersion.Text = string.Concat("Aplicación: ", name, " ", "Versión: ", version);
                string[] user = Context.User.Identity.Name.Split('\\');
                lblUsuario.Text = user[user.Length - 1];

                LlenarMenu();
            }
            catch (Exception ex)
            { }
        }

        private void LlenarMenu()
        {
            mnuPrincipal.Items.Clear();
            List<menu> listaMenu = Negociomenu.Instancia.Listar();
            foreach (menu _menu in listaMenu)
            {
                if (_menu.menuId.Equals(_menu.padreId)) //es elemento padre
                {
                    MenuItem menuItem = new MenuItem();
                    menuItem.Value = _menu.menuId.ToString();
                    menuItem.Text = _menu.descripcion;
                    menuItem.ImageUrl = _menu.icono;
                    menuItem.NavigateUrl = _menu.url + (_menu.parametros != null ? "?p=" + cadena.EncriptarSimple(_menu.parametros) : "");
                    mnuPrincipal.Items.Add(menuItem);
                    AgregarHijos(menuItem, listaMenu);
                }
            }
        }

        private void AgregarHijos(MenuItem menuItem, List<menu> listaMenu)
        {
            Cadena funcionCadena = new Cadena();

            foreach (menu _menu in listaMenu)
            {
                if (_menu.menuId != _menu.padreId && _menu.padreId == int.Parse(menuItem.Value))
                {
                    MenuItem menuHijo = new MenuItem();
                    menuHijo.Value = _menu.menuId.ToString();
                    menuHijo.Text = _menu.descripcion;
                    menuHijo.ImageUrl = _menu.icono;
                    menuHijo.NavigateUrl = _menu.url + (_menu.parametros != null ? "?p=" + cadena.EncriptarSimple(_menu.parametros) : "");
                    menuItem.ChildItems.Add(menuHijo);
                    //metodo recursivo para saber si tiene mas subitems
                    AgregarHijos(menuHijo, listaMenu);
                }
            }
        }

        protected void btnCerrarSession_Click(object sender, EventArgs e)
        {
            try
            {
                FormsAuthentication.SignOut();
                FormsAuthentication.RedirectToLoginPage();
                lblUsuario.Text = "";
            }
            catch (Exception ex)
            { }

        }
    }
}
